{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.[enumerate](#1)\n",
    "## 2.[lambda](#2)\n",
    "## 3.[pandas](#3)\n",
    "## 4.[numpy](#4)\n",
    "## 5.[markdown](#5)\n",
    "## 6.[pytorch](#6)\n",
    "## 7.[plot](#7)\n",
    "## L.[其他操作](#last)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import torch\n",
    "from torchviz import make_dot\n",
    "from colorama import Fore, Back\n",
    "import seaborn as sns; sns.set(color_codes=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"1\">1.enumerate</span>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<enumerate object at 0x7fac896b2120> <class 'enumerate'>\n"
     ]
    }
   ],
   "source": [
    "#枚举\n",
    "LL = ['a','b','c']\n",
    "aa =  enumerate(LL)\n",
    "print(aa, type(aa))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 a\n",
      "1 b\n",
      "2 c\n"
     ]
    }
   ],
   "source": [
    "for i ,e in enumerate(LL):\n",
    "    print(i,e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(3, 'a')\n",
      "(4, 'b')\n",
      "(5, 'c')\n"
     ]
    }
   ],
   "source": [
    "for e in enumerate(LL,3):\n",
    "    print(e)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"2\">2.lambda</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 快速构建函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fac87697400>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "epsilon_by_frame = lambda frame_idx:math.exp(-frame_idx/100)\n",
    "plt.plot([epsilon_by_frame(i) for i in range(500)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 多返回值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2 3\n"
     ]
    }
   ],
   "source": [
    "multi_return_value = lambda a, b :(a+1,b+2)\n",
    "a, b =multi_return_value(1,1)\n",
    "print(a,b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 和map连用快速定义并返回"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 8, 27, 64]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L = [1,2,3,4]\n",
    "list(map(lambda x : x**3, L))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 和filter连用进行数据的挑选"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2, 3, 4]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(filter(lambda x: x>=2, L))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"3\">3.pandas</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* pd.qcut根据值均匀分配将数据分为n个梯度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(-0.001, 1.667], (-0.001, 1.667], (1.667, 3.333], (1.667, 3.333], (3.333, 5.0], (3.333, 5.0]]\n",
       "Categories (3, interval[float64]): [(-0.001, 1.667] < (1.667, 3.333] < (3.333, 5.0]]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.qcut(range(6),3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[good, good, medium, bad, bad]\n",
       "Categories (3, object): [good < medium < bad]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.qcut(range(5), 3, labels=[\"good\", \"medium\", \"bad\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id =\"4\">4.numpy</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* np.random.choice进行选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n",
      "c\n",
      "b\n"
     ]
    }
   ],
   "source": [
    "# np.random.choice(a,size=None,replace=True,p=None)\n",
    "# a:一维数组(表示在其中选一个)或者int数(表示在[0,i-1]中选一个)\n",
    "# size:int数代表一维数组，也可返回指定大小的多维矩阵\n",
    "# replace=True 表示可能会返回重复的项\n",
    "# p:对a中的每个数设置权重，即被选中的概率\n",
    "print(np.random.choice(range(6)))\n",
    "print(np.random.choice([\"a\",\"b\",\"c\",\"d\"]))\n",
    "print(np.random.choice([\"a\",\"b\",\"c\",\"d\"],p = [0,1,0,0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 图片的numpy和torch.Tensor之间的转化要用到transpose()函数<br>\n",
    "    对于numpy 的图片:H x W x C<br>\n",
    "    对于$\\;$torch$\\;$ 的图片:C x H x W"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id = \"5\">5.markdown</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$${\\max_{a'}}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id='6'>6.pytorch</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* pytorch 使用 **(a)** torch.tensor.item()和 **(b)** torch.tensor.cpu().numpy()的异同<br>\n",
    "    同 : 都是将tensor张量转化为python标量值<br>\n",
    "    异 : (a)只能对单个张量操作 | (b)既可以对单个张量操作也可以对进行数组操作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test : tensor(5)\n",
      ".item() : 5\n",
      ".cpu().numpy() : 5\n"
     ]
    }
   ],
   "source": [
    "test = torch.tensor(5)\n",
    "print(\"test :\", test)\n",
    "print(\".item() :\", test.item())\n",
    "print(\".cpu().numpy() :\", test.cpu().numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test : tensor([1, 2])\n",
      ".cpu().numpy() : [1 2]\n",
      "\n",
      "\u001b[37m\u001b[41mValueError: only one element tensors can be converted to Python scalars\n"
     ]
    }
   ],
   "source": [
    "test = torch.tensor([1,2])\n",
    "print(\"test :\", test)\n",
    "print(\".cpu().numpy() :\",test.cpu().numpy())\n",
    "print(\"\")\n",
    "try:\n",
    "    print(\".item() :\", test.item())\n",
    "except ValueError :\n",
    "    print(Fore.WHITE + Back.RED + \"ValueError: only one element tensors can be converted to Python scalars\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* torchviz画图<br>\n",
    "该包有两个方法,make_dot_from_trace和make_dot。感觉我只用到了第一个<br>\n",
    "其中，make_dot(model).render(\"picture\")保存的是pdf文档<br>\n",
    "make_dot(model).render(\"picture\", format=\"png\")保存的是png格式图片和图片信息文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"509pt\" height=\"568pt\"\n",
       " viewBox=\"0.00 0.00 508.50 568.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 564)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-564 504.5,-564 504.5,4 -4,4\"/>\n",
       "<!-- 140378982228992 -->\n",
       "<g id=\"node1\" class=\"node\"><title>140378982228992</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"197.5,-21 86.5,-21 86.5,-0 197.5,-0 197.5,-21\"/>\n",
       "<text text-anchor=\"middle\" x=\"142\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\">MulBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982229832 -->\n",
       "<g id=\"node2\" class=\"node\"><title>140378982229832</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"130,-135 0,-135 0,-114 130,-114 130,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"65\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">SigmoidBackward</text>\n",
       "</g>\n",
       "<!-- 140378982229832&#45;&gt;140378982228992 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>140378982229832&#45;&gt;140378982228992</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M71.565,-113.951C84.4077,-95.2707 113.04,-53.6238 129.573,-29.5761\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"132.67,-31.2482 135.452,-21.0249 126.902,-27.2825 132.67,-31.2482\"/>\n",
       "</g>\n",
       "<!-- 140378982228040 -->\n",
       "<g id=\"node3\" class=\"node\"><title>140378982228040</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"286,-306 178,-306 178,-285 286,-285 286,-306\"/>\n",
       "<text text-anchor=\"middle\" x=\"232\" y=\"-292.4\" font-family=\"Times,serif\" font-size=\"12.00\">SplitBackward</text>\n",
       "</g>\n",
       "<!-- 140378982228040&#45;&gt;140378982229832 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>140378982228040&#45;&gt;140378982229832</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M177.796,-291.714C145.823,-287.107 107.199,-275.849 84,-249 58.9316,-219.987 59.422,-172.165 62.128,-145.337\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"65.6229,-145.59 63.3553,-135.241 58.6741,-144.746 65.6229,-145.59\"/>\n",
       "</g>\n",
       "<!-- 140378982230168 -->\n",
       "<g id=\"node16\" class=\"node\"><title>140378982230168</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"223,-249 93,-249 93,-228 223,-228 223,-249\"/>\n",
       "<text text-anchor=\"middle\" x=\"158\" y=\"-235.4\" font-family=\"Times,serif\" font-size=\"12.00\">SigmoidBackward</text>\n",
       "</g>\n",
       "<!-- 140378982228040&#45;&gt;140378982230168 -->\n",
       "<g id=\"edge16\" class=\"edge\"><title>140378982228040&#45;&gt;140378982230168</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M219.11,-284.92C208.209,-276.818 192.363,-265.04 179.538,-255.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"181.354,-252.497 171.24,-249.341 177.179,-258.115 181.354,-252.497\"/>\n",
       "</g>\n",
       "<!-- 140378982228320 -->\n",
       "<g id=\"node18\" class=\"node\"><title>140378982228320</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"371,-249 241,-249 241,-228 371,-228 371,-249\"/>\n",
       "<text text-anchor=\"middle\" x=\"306\" y=\"-235.4\" font-family=\"Times,serif\" font-size=\"12.00\">SigmoidBackward</text>\n",
       "</g>\n",
       "<!-- 140378982228040&#45;&gt;140378982228320 -->\n",
       "<g id=\"edge19\" class=\"edge\"><title>140378982228040&#45;&gt;140378982228320</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M244.89,-284.92C255.791,-276.818 271.637,-265.04 284.462,-255.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"286.821,-258.115 292.76,-249.341 282.646,-252.497 286.821,-258.115\"/>\n",
       "</g>\n",
       "<!-- 140378982229888 -->\n",
       "<g id=\"node19\" class=\"node\"><title>140378982229888</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"500.5,-249 389.5,-249 389.5,-228 500.5,-228 500.5,-249\"/>\n",
       "<text text-anchor=\"middle\" x=\"445\" y=\"-235.4\" font-family=\"Times,serif\" font-size=\"12.00\">TanhBackward</text>\n",
       "</g>\n",
       "<!-- 140378982228040&#45;&gt;140378982229888 -->\n",
       "<g id=\"edge21\" class=\"edge\"><title>140378982228040&#45;&gt;140378982229888</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M269.102,-284.92C304.88,-275.681 359.167,-261.664 397.962,-251.646\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"399.159,-254.952 407.967,-249.063 397.409,-248.174 399.159,-254.952\"/>\n",
       "</g>\n",
       "<!-- 140378982230560 -->\n",
       "<g id=\"node4\" class=\"node\"><title>140378982230560</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"288.5,-363 175.5,-363 175.5,-342 288.5,-342 288.5,-363\"/>\n",
       "<text text-anchor=\"middle\" x=\"232\" y=\"-349.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982230560&#45;&gt;140378982228040 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>140378982230560&#45;&gt;140378982228040</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M232,-341.92C232,-334.908 232,-325.144 232,-316.465\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"235.5,-316.341 232,-306.341 228.5,-316.341 235.5,-316.341\"/>\n",
       "</g>\n",
       "<!-- 140378982230952 -->\n",
       "<g id=\"node5\" class=\"node\"><title>140378982230952</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"223,-420 95,-420 95,-399 223,-399 223,-420\"/>\n",
       "<text text-anchor=\"middle\" x=\"159\" y=\"-406.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddmmBackward</text>\n",
       "</g>\n",
       "<!-- 140378982230952&#45;&gt;140378982230560 -->\n",
       "<g id=\"edge4\" class=\"edge\"><title>140378982230952&#45;&gt;140378982230560</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M171.716,-398.92C182.469,-390.818 198.102,-379.04 210.753,-369.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"213.058,-372.154 218.939,-363.341 208.846,-366.563 213.058,-372.154\"/>\n",
       "</g>\n",
       "<!-- 140378982231792 -->\n",
       "<g id=\"node6\" class=\"node\"><title>140378982231792</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"109.5,-490 48.5,-490 48.5,-456 109.5,-456 109.5,-490\"/>\n",
       "<text text-anchor=\"middle\" x=\"79\" y=\"-476.4\" font-family=\"Times,serif\" font-size=\"12.00\">bias_ih</text>\n",
       "<text text-anchor=\"middle\" x=\"79\" y=\"-463.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512)</text>\n",
       "</g>\n",
       "<!-- 140378982231792&#45;&gt;140378982230952 -->\n",
       "<g id=\"edge5\" class=\"edge\"><title>140378982231792&#45;&gt;140378982230952</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M100.019,-455.842C111.94,-446.678 126.788,-435.263 138.605,-426.179\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"140.793,-428.911 146.588,-420.042 136.527,-423.362 140.793,-428.911\"/>\n",
       "</g>\n",
       "<!-- 140378982229664 -->\n",
       "<g id=\"node7\" class=\"node\"><title>140378982229664</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"216,-483.5 128,-483.5 128,-462.5 216,-462.5 216,-483.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"172\" y=\"-469.9\" font-family=\"Times,serif\" font-size=\"12.00\">TBackward</text>\n",
       "</g>\n",
       "<!-- 140378982229664&#45;&gt;140378982230952 -->\n",
       "<g id=\"edge6\" class=\"edge\"><title>140378982229664&#45;&gt;140378982230952</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M169.969,-462.391C168.148,-453.776 165.42,-440.871 163.14,-430.086\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"166.552,-429.305 161.06,-420.245 159.704,-430.753 166.552,-429.305\"/>\n",
       "</g>\n",
       "<!-- 140378982230112 -->\n",
       "<g id=\"node8\" class=\"node\"><title>140378982230112</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"213,-560 131,-560 131,-526 213,-526 213,-560\"/>\n",
       "<text text-anchor=\"middle\" x=\"172\" y=\"-546.4\" font-family=\"Times,serif\" font-size=\"12.00\">weight_ih</text>\n",
       "<text text-anchor=\"middle\" x=\"172\" y=\"-533.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512, 128)</text>\n",
       "</g>\n",
       "<!-- 140378982230112&#45;&gt;140378982229664 -->\n",
       "<g id=\"edge7\" class=\"edge\"><title>140378982230112&#45;&gt;140378982229664</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M172,-525.885C172,-516.309 172,-504.088 172,-493.912\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"175.5,-493.895 172,-483.895 168.5,-493.895 175.5,-493.895\"/>\n",
       "</g>\n",
       "<!-- 140378982229944 -->\n",
       "<g id=\"node9\" class=\"node\"><title>140378982229944</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"369,-420 241,-420 241,-399 369,-399 369,-420\"/>\n",
       "<text text-anchor=\"middle\" x=\"305\" y=\"-406.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddmmBackward</text>\n",
       "</g>\n",
       "<!-- 140378982229944&#45;&gt;140378982230560 -->\n",
       "<g id=\"edge8\" class=\"edge\"><title>140378982229944&#45;&gt;140378982230560</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M292.284,-398.92C281.531,-390.818 265.898,-379.04 253.247,-369.508\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"255.154,-366.563 245.061,-363.341 250.942,-372.154 255.154,-366.563\"/>\n",
       "</g>\n",
       "<!-- 140378982229720 -->\n",
       "<g id=\"node10\" class=\"node\"><title>140378982229720</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"324.5,-490 259.5,-490 259.5,-456 324.5,-456 324.5,-490\"/>\n",
       "<text text-anchor=\"middle\" x=\"292\" y=\"-476.4\" font-family=\"Times,serif\" font-size=\"12.00\">bias_hh</text>\n",
       "<text text-anchor=\"middle\" x=\"292\" y=\"-463.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512)</text>\n",
       "</g>\n",
       "<!-- 140378982229720&#45;&gt;140378982229944 -->\n",
       "<g id=\"edge9\" class=\"edge\"><title>140378982229720&#45;&gt;140378982229944</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M295.416,-455.842C297.089,-447.923 299.118,-438.324 300.878,-430.001\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"304.339,-430.55 302.983,-420.042 297.49,-429.102 304.339,-430.55\"/>\n",
       "</g>\n",
       "<!-- 140378982230280 -->\n",
       "<g id=\"node11\" class=\"node\"><title>140378982230280</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"431,-483.5 343,-483.5 343,-462.5 431,-462.5 431,-483.5\"/>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-469.9\" font-family=\"Times,serif\" font-size=\"12.00\">TBackward</text>\n",
       "</g>\n",
       "<!-- 140378982230280&#45;&gt;140378982229944 -->\n",
       "<g id=\"edge10\" class=\"edge\"><title>140378982230280&#45;&gt;140378982229944</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M374.188,-462.391C361.31,-452.732 341.242,-437.681 326.028,-426.271\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"327.823,-423.242 317.723,-420.042 323.623,-428.842 327.823,-423.242\"/>\n",
       "</g>\n",
       "<!-- 140378982229440 -->\n",
       "<g id=\"node12\" class=\"node\"><title>140378982229440</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"428.5,-560 345.5,-560 345.5,-526 428.5,-526 428.5,-560\"/>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-546.4\" font-family=\"Times,serif\" font-size=\"12.00\">weight_hh</text>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-533.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (512, 128)</text>\n",
       "</g>\n",
       "<!-- 140378982229440&#45;&gt;140378982230280 -->\n",
       "<g id=\"edge11\" class=\"edge\"><title>140378982229440&#45;&gt;140378982230280</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M387,-525.885C387,-516.309 387,-504.088 387,-493.912\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"390.5,-493.895 387,-483.895 383.5,-493.895 390.5,-493.895\"/>\n",
       "</g>\n",
       "<!-- 140378982229496 -->\n",
       "<g id=\"node13\" class=\"node\"><title>140378982229496</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"246.5,-78 135.5,-78 135.5,-57 246.5,-57 246.5,-78\"/>\n",
       "<text text-anchor=\"middle\" x=\"191\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\">TanhBackward</text>\n",
       "</g>\n",
       "<!-- 140378982229496&#45;&gt;140378982228992 -->\n",
       "<g id=\"edge12\" class=\"edge\"><title>140378982229496&#45;&gt;140378982228992</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M182.465,-56.9197C175.594,-49.2072 165.755,-38.1639 157.5,-28.8978\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"160.033,-26.4792 150.767,-21.3408 154.806,-31.1357 160.033,-26.4792\"/>\n",
       "</g>\n",
       "<!-- 140378982231400 -->\n",
       "<g id=\"node14\" class=\"node\"><title>140378982231400</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"261.5,-135 148.5,-135 148.5,-114 261.5,-114 261.5,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"205\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982231400&#45;&gt;140378982229496 -->\n",
       "<g id=\"edge13\" class=\"edge\"><title>140378982231400&#45;&gt;140378982229496</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M202.561,-113.92C200.757,-106.83 198.236,-96.9269 196.009,-88.1763\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"199.364,-87.1684 193.505,-78.3408 192.58,-88.8952 199.364,-87.1684\"/>\n",
       "</g>\n",
       "<!-- 140378982231344 -->\n",
       "<g id=\"node15\" class=\"node\"><title>140378982231344</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"222.5,-192 111.5,-192 111.5,-171 222.5,-171 222.5,-192\"/>\n",
       "<text text-anchor=\"middle\" x=\"167\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\">MulBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982231344&#45;&gt;140378982231400 -->\n",
       "<g id=\"edge14\" class=\"edge\"><title>140378982231344&#45;&gt;140378982231400</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M173.619,-170.92C178.786,-163.441 186.117,-152.83 192.394,-143.745\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"195.396,-145.558 198.201,-135.341 189.637,-141.579 195.396,-145.558\"/>\n",
       "</g>\n",
       "<!-- 140378982230168&#45;&gt;140378982231344 -->\n",
       "<g id=\"edge15\" class=\"edge\"><title>140378982230168&#45;&gt;140378982231344</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M159.568,-227.92C160.715,-220.908 162.313,-211.144 163.733,-202.465\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"167.229,-202.775 165.39,-192.341 160.321,-201.644 167.229,-202.775\"/>\n",
       "</g>\n",
       "<!-- 140378982230896 -->\n",
       "<g id=\"node17\" class=\"node\"><title>140378982230896</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"361.5,-192 250.5,-192 250.5,-171 361.5,-171 361.5,-192\"/>\n",
       "<text text-anchor=\"middle\" x=\"306\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\">MulBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982230896&#45;&gt;140378982231400 -->\n",
       "<g id=\"edge17\" class=\"edge\"><title>140378982230896&#45;&gt;140378982231400</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M288.407,-170.92C272.717,-162.376 249.521,-149.744 231.571,-139.969\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"233.186,-136.864 222.73,-135.155 229.839,-143.011 233.186,-136.864\"/>\n",
       "</g>\n",
       "<!-- 140378982228320&#45;&gt;140378982230896 -->\n",
       "<g id=\"edge18\" class=\"edge\"><title>140378982228320&#45;&gt;140378982230896</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M306,-227.92C306,-220.908 306,-211.144 306,-202.465\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"309.5,-202.341 306,-192.341 302.5,-202.341 309.5,-202.341\"/>\n",
       "</g>\n",
       "<!-- 140378982229888&#45;&gt;140378982230896 -->\n",
       "<g id=\"edge20\" class=\"edge\"><title>140378982229888&#45;&gt;140378982230896</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M420.788,-227.92C398.403,-219.062 364.915,-205.812 339.878,-195.905\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"340.987,-192.58 330.401,-192.155 338.412,-199.089 340.987,-192.58\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x7fac8760b0f0>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lstm_cell = torch.nn.LSTMCell(128, 128)\n",
    "x = torch.randn(3, 128)\n",
    "make_dot(lstm_cell(x), params=dict(list(lstm_cell.named_parameters())))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 理解.detach()<br>\n",
    "    1. 简单理解为该tensor的复制(所以和.detach()的顺序没有关系)，且require_grad = False\n",
    "    2. 通常我们使用到**神经网络**里输出的量defaut是require_grad = True的，也就是说其在.backward()时是可求导的。<br>\n",
    "    如果自己定义的量有求导的需要，则需加上require_grad = True。<br>\n",
    "    例如在图片的分类问题中，label是不需要求导的，而预测值由神经网络输出，是可导的，这满足我们的需要，所以可以不用管.detach()\n",
    "    3. 但在强化学习中，要根据公式中导数做出选择\n",
    "    4. 在[官网示例](https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html)中讲解了每次的求导过程使用```loss.grad_fn```或者```loss.grad_fn.next_functions[0][0]```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x.grad: tensor([5.])\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"252pt\" height=\"214pt\"\n",
       " viewBox=\"0.00 0.00 252.00 214.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 210)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-210 248,-210 248,4 -4,4\"/>\n",
       "<!-- 140378982604928 -->\n",
       "<g id=\"node1\" class=\"node\"><title>140378982604928</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"178.5,-21 64.5,-21 64.5,-0 178.5,-0 178.5,-21\"/>\n",
       "<text text-anchor=\"middle\" x=\"121.5\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\">SumBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982607224 -->\n",
       "<g id=\"node2\" class=\"node\"><title>140378982607224</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"178,-78 65,-78 65,-57 178,-57 178,-78\"/>\n",
       "<text text-anchor=\"middle\" x=\"121.5\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982607224&#45;&gt;140378982604928 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>140378982607224&#45;&gt;140378982604928</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M121.5,-56.9197C121.5,-49.9083 121.5,-40.1442 121.5,-31.4652\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"125,-31.3408 121.5,-21.3408 118,-31.3409 125,-31.3408\"/>\n",
       "</g>\n",
       "<!-- 140378982605824 -->\n",
       "<g id=\"node3\" class=\"node\"><title>140378982605824</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"113,-135 0,-135 0,-114 113,-114 113,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"56.5\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">PowBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982605824&#45;&gt;140378982607224 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>140378982605824&#45;&gt;140378982607224</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M67.8221,-113.92C77.2132,-105.973 90.7827,-94.4916 101.928,-85.0605\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"104.497,-87.4721 109.87,-78.3408 99.9752,-82.1284 104.497,-87.4721\"/>\n",
       "</g>\n",
       "<!-- 140378982604984 -->\n",
       "<g id=\"node4\" class=\"node\"><title>140378982604984</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"148.5,-206 94.5,-206 94.5,-171 148.5,-171 148.5,-206\"/>\n",
       "<text text-anchor=\"middle\" x=\"121.5\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (1)</text>\n",
       "</g>\n",
       "<!-- 140378982604984&#45;&gt;140378982605824 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>140378982604984&#45;&gt;140378982605824</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M104.081,-170.885C94.6799,-161.918 83.1153,-150.887 73.7415,-141.946\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"76.1302,-139.387 66.4783,-135.018 71.2987,-144.453 76.1302,-139.387\"/>\n",
       "</g>\n",
       "<!-- 140378982605208 -->\n",
       "<g id=\"node5\" class=\"node\"><title>140378982605208</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"244,-135 131,-135 131,-114 244,-114 244,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"187.5\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">PowBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982604984&#45;&gt;140378982605208 -->\n",
       "<g id=\"edge5\" class=\"edge\"><title>140378982604984&#45;&gt;140378982605208</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M139.187,-170.885C148.733,-161.918 160.475,-150.887 169.993,-141.946\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"172.476,-144.416 177.368,-135.018 167.683,-139.314 172.476,-144.416\"/>\n",
       "</g>\n",
       "<!-- 140378982605208&#45;&gt;140378982607224 -->\n",
       "<g id=\"edge4\" class=\"edge\"><title>140378982605208&#45;&gt;140378982607224</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M176.004,-113.92C166.375,-105.896 152.419,-94.2661 141.04,-84.7837\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"143.232,-82.0539 133.309,-78.3408 138.751,-87.4315 143.232,-82.0539\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x7fac87646908>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.ones(1, requires_grad=True)\n",
    "y = x**2\n",
    "z = x**3\n",
    "r = (y + z).sum()\n",
    "r.backward()\n",
    "print(\"x.grad:\", x.grad)\n",
    "make_dot(r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x.grad: tensor([2., 2., 2., 2., 2., 2., 2., 2., 2., 2.])\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
       " -->\n",
       "<!-- Title: %3 Pages: 1 -->\n",
       "<svg width=\"122pt\" height=\"214pt\"\n",
       " viewBox=\"0.00 0.00 122.00 214.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 210)\">\n",
       "<title>%3</title>\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-210 118,-210 118,4 -4,4\"/>\n",
       "<!-- 140378982606832 -->\n",
       "<g id=\"node1\" class=\"node\"><title>140378982606832</title>\n",
       "<polygon fill=\"#caff70\" stroke=\"black\" points=\"114,-21 0,-21 0,-0 114,-0 114,-21\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-7.4\" font-family=\"Times,serif\" font-size=\"12.00\">SumBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982673376 -->\n",
       "<g id=\"node2\" class=\"node\"><title>140378982673376</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"113.5,-78 0.5,-78 0.5,-57 113.5,-57 113.5,-78\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-64.4\" font-family=\"Times,serif\" font-size=\"12.00\">AddBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982673376&#45;&gt;140378982606832 -->\n",
       "<g id=\"edge1\" class=\"edge\"><title>140378982673376&#45;&gt;140378982606832</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57,-56.9197C57,-49.9083 57,-40.1442 57,-31.4652\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"60.5001,-31.3408 57,-21.3408 53.5001,-31.3409 60.5001,-31.3408\"/>\n",
       "</g>\n",
       "<!-- 140378982674104 -->\n",
       "<g id=\"node3\" class=\"node\"><title>140378982674104</title>\n",
       "<polygon fill=\"lightgrey\" stroke=\"black\" points=\"113.5,-135 0.5,-135 0.5,-114 113.5,-114 113.5,-135\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-121.4\" font-family=\"Times,serif\" font-size=\"12.00\">PowBackward0</text>\n",
       "</g>\n",
       "<!-- 140378982674104&#45;&gt;140378982673376 -->\n",
       "<g id=\"edge2\" class=\"edge\"><title>140378982674104&#45;&gt;140378982673376</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57,-113.92C57,-106.908 57,-97.1442 57,-88.4652\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"60.5001,-88.3408 57,-78.3408 53.5001,-88.3409 60.5001,-88.3408\"/>\n",
       "</g>\n",
       "<!-- 140378982670856 -->\n",
       "<g id=\"node4\" class=\"node\"><title>140378982670856</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"84,-206 30,-206 30,-171 84,-171 84,-206\"/>\n",
       "<text text-anchor=\"middle\" x=\"57\" y=\"-178.4\" font-family=\"Times,serif\" font-size=\"12.00\"> (10)</text>\n",
       "</g>\n",
       "<!-- 140378982670856&#45;&gt;140378982674104 -->\n",
       "<g id=\"edge3\" class=\"edge\"><title>140378982670856&#45;&gt;140378982674104</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57,-170.885C57,-162.994 57,-153.505 57,-145.248\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"60.5001,-145.018 57,-135.018 53.5001,-145.018 60.5001,-145.018\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x7fac875fa438>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = torch.ones(10, requires_grad=True)\n",
    "y = x**2\n",
    "z = x.detach()**3\n",
    "r = (y + z).sum()\n",
    "r.backward()\n",
    "print(\"x.grad:\", x.grad)\n",
    "make_dot(r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id = \"last\">plot</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 使用seaborn画出论文里带有置信区间的图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fad39082588>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_fig = 5\n",
    "x_list_sub = lambda : np.arange(-1, 1, 0.1)\n",
    "x_list_target = np.stack((x_list_sub() for _ in range(num_fig)), axis=1).flatten()\n",
    "y_list_target = x_list_target ** 2 + np.random.randn(x_list_target.shape[0]) * 0.2\n",
    "data = pd.DataFrame(data=dict(x=x_list_target, y=y_list_target))\n",
    "sns.lineplot(x=\"x\", y=\"y\", data=data, color=\"g\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <span id = \"last\">其他操作</span>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 对axis = 0,或axis = 1 的理解<br>\n",
    "    都表示跨越，0跨行，1跨列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 1 2]\n",
      " [3 4 5]\n",
      " [6 7 8]]\n"
     ]
    }
   ],
   "source": [
    "a = np.arange(9).reshape(3,3)\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0跨行: [ 9 12 15]\n",
      "1跨列: [ 3 12 21]\n"
     ]
    }
   ],
   "source": [
    "print(\"0跨行:\",a.sum(0))\n",
    "print(\"1跨列:\",a.sum(1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总和: 36\n"
     ]
    }
   ],
   "source": [
    "print(\"总和:\",a.sum())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 对函数中\\__len__(self)的理解<br>\n",
    "    重写len方法供调用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3 3\n"
     ]
    }
   ],
   "source": [
    "class Test():\n",
    "    def __init__(self, *num):\n",
    "        self.nums = num\n",
    "    def __len__(self):\n",
    "        return len(self.nums)\n",
    "\n",
    "test = Test(\"A\",\"B\",\"C\")\n",
    "print(len(test),test.__len__())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* \\*args 和 \\*\\*kwargs的异同(some code reference Geeks for Geeks)<br>\n",
    "    都是可变参数的传值，两者都可当正常函数的传值处理<br>\n",
    "    \\*args是不定长的可变参数，而\\*\\*kwargs使用的是类似于元组的key to value的可变参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello\n",
      "Welcome\n",
      "to\n",
      "HHQ'utils\n"
     ]
    }
   ],
   "source": [
    "#对于*args\n",
    "def myFun(*argv): \n",
    "    for arg in argv:\n",
    "        print(arg)\n",
    "        \n",
    "myFun('Hello', 'Welcome', 'to', 'HHQ\\'utils') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "first == Geeks\n",
      "mid == for\n",
      "last == Geeks\n"
     ]
    }
   ],
   "source": [
    "#对于**kwargs我分为了两种情况:\n",
    "#第一种(定义可变参数函数):\n",
    "def myFun(**kwargs): \n",
    "    for  key, value in kwargs.items():\n",
    "        print(\"%s == %s\"%(key, value))\n",
    "\n",
    "myFun(first ='Geeks', mid ='for', last='Geeks')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the first_list is [1, 2], last_list is [3, 4]\n"
     ]
    }
   ],
   "source": [
    "#第二种(传入可变参数的字典):\n",
    "def myFun(first_list, last_list):\n",
    "    print(\"the first_list is {}, last_list is {}\".format(first_list, last_list))\n",
    "\n",
    "sample = {\"first_list\":[1,2],\"last_list\":[3,4]}\n",
    "myFun(**sample)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 提取list中索引值为奇数或者偶数的数<br>\n",
    "    some_list[start:stop:step]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 2, 4, 6])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.arange(8)[::2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 关于类中方法的错误使用(DDPG 添加Noise的时候发现的)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "class Test:\n",
    "    def __init__(self):\n",
    "        self.state = np.zeros(1)\n",
    "    \n",
    "    def sample_right(self):\n",
    "        self.state = self.state + np.random.randn(1)\n",
    "        return self.state\n",
    "    \n",
    "    def sample_error(self):\n",
    "        self.state += np.random.randn(1)\n",
    "        return self.state\n",
    "\n",
    "plt.figure(figsize=(16, 6))\n",
    "\n",
    "plt.subplot(121)\n",
    "test = Test()\n",
    "right_sample = [test.sample_right() for _ in range(1000)]\n",
    "error_sample = [test.sample_error() for _ in range(1000)]\n",
    "\n",
    "plt.plot(right_sample, label=\"a\")\n",
    "plt.plot(error_sample, label=\"b\")\n",
    "plt.legend()\n",
    "\n",
    "plt.subplot(122)\n",
    "test1 = Test()\n",
    "right_sample = [test1.sample_right()[0] for _ in range(1000)]\n",
    "error_sample = [test1.sample_error()[0] for _ in range(1000)]\n",
    "\n",
    "plt.plot(right_sample, label=\"a\")\n",
    "plt.plot(error_sample, label=\"b\")\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从一个.py文件中引入其中的类使用:<br>\n",
    "from xx import class_name<br>\n",
    "使用import xxx<br>\n",
    "都在__init__()写了东西<br>\n",
    "### 值得去查查"
   ]
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
